C#에서 PDF 렌더링을 위한 프록시 서버 구성 방법
IronPDF의 프록시 설정은 IronPDF의 메서드 매개변수이며, RenderHtmlAsPdf() 오버로드의 속성이 아니며 ChromePdfRenderOptions에는 속성이 아닙니다. 이 구분은 중요합니다. RenderUrlAsPdf()는 전혀 프록시 매개변수를 가지지 않으므로, 회사 프록시 뒤에 있는 라이브 URL을 렌더링할 때 다른 전략이 필요합니다. 기본 설정인 null를 전달하면, IronPDF는 직접 연결합니다.
이 가이드는 프로덕션에서 발생할 수 있는 모든 프록시 시나리오를 다룹니다: 직접 프록시 문자열, 인증된 회사 프록시, RenderUrlAsPdf 우회법, Docker 컨테이너 설정, CI/CD 파이프라인 통합, SSL 가로채기 및 NTLM 인증에 관한 일반적인 문제 해결 패턴.
무료 30일 체험판을 시작하여 환경에서 프록시 구성을 테스트해 보세요.
빠른 시작: 프록시를 통한 PDF 렌더링
IronPDF의 선택적 proxy 매개변수는 회사 프록시 뒤에 있는 라이브 웹 페이지를 변환하는 데 도움을 줍니다. 시작하려면 이 코드 스니펫을 사용하세요.
-
NuGet 패키지 관리자를 사용하여 https://www.nuget.org/packages/IronPdf 설치하기
PM > Install-Package IronPdf -
다음 코드 조각을 복사하여 실행하세요.
using IronPdf; var renderer = new ChromePdfRenderer(); // Proxy is the third parameter — not a render option PdfDocument pdf = renderer.RenderHtmlAsPdf( "<h1>Hello from behind the proxy</h1>", baseUrlOrPath: null, proxy: "http://proxy.corp.local:8080" ); pdf.SaveAs("proxied-output.pdf"); -
실제 운영 환경에서 테스트할 수 있도록 배포하세요.
무료 체험판으로 오늘 프로젝트에서 IronPDF 사용 시작하기
최소 워크플로 (3단계)
- NuGet을 통해 IronPDF를 설치하세요:
Install-Package IronPdf - 프록시 문자열을
RenderHtmlAsPdf()의 세 번째 매개변수로 전달하세요 - 형식: 인증된 프록시의 경우
http(s)://host:port또는http(s)://user:pass@host:port
RenderHtmlAsPdf에 프록시를 전달하는 방법은?
Proxy 매개변수는 네 가지 메서드 시그니처의 선택적 string입니다:
// Instance methods
PdfDocument RenderHtmlAsPdf(string Html, string BaseUrlOrPath, string Proxy = null)
PdfDocument RenderHtmlAsPdf(string Html, Uri BaseUrl = null, string Proxy = null)
// Static methods
PdfDocument StaticRenderHtmlAsPdf(string Html, ChromePdfRenderOptions Options = null, string Proxy = null)
PdfDocument StaticRenderHtmlAsPdf(string Html, string BaseUrlOrPath, ChromePdfRenderOptions Options = null, string Proxy = null)
// Instance methods
PdfDocument RenderHtmlAsPdf(string Html, string BaseUrlOrPath, string Proxy = null)
PdfDocument RenderHtmlAsPdf(string Html, Uri BaseUrl = null, string Proxy = null)
// Static methods
PdfDocument StaticRenderHtmlAsPdf(string Html, ChromePdfRenderOptions Options = null, string Proxy = null)
PdfDocument StaticRenderHtmlAsPdf(string Html, string BaseUrlOrPath, ChromePdfRenderOptions Options = null, string Proxy = null)
' Instance methods
Function RenderHtmlAsPdf(Html As String, BaseUrlOrPath As String, Optional Proxy As String = Nothing) As PdfDocument
End Function
Function RenderHtmlAsPdf(Html As String, Optional BaseUrl As Uri = Nothing, Optional Proxy As String = Nothing) As PdfDocument
End Function
' Static methods
Shared Function StaticRenderHtmlAsPdf(Html As String, Optional Options As ChromePdfRenderOptions = Nothing, Optional Proxy As String = Nothing) As PdfDocument
End Function
Shared Function StaticRenderHtmlAsPdf(Html As String, BaseUrlOrPath As String, Optional Options As ChromePdfRenderOptions = Nothing, Optional Proxy As String = Nothing) As PdfDocument
End Function
이 매개변수가 기본값인 null일 경우, IronPDF의 Chromium 엔진은 외부 리소스 (스타일시트, 이미지, 폰트, JavaScript 파일 등)를 직접 연결합니다. 프록시 문자열을 제공하면, 렌더링 엔진의 모든 HTTP/HTTPS 요청이 해당 프록시를 통해 라우팅됩니다.
using IronPdf;
var renderer = new ChromePdfRenderer();
// Direct connection (default — no proxy)
var pdfDirect = renderer.RenderHtmlAsPdf("<h1>Direct</h1>");
// Through an unauthenticated proxy
var pdfProxied = renderer.RenderHtmlAsPdf(
"<h1>Proxied</h1>",
baseUrlOrPath: null,
proxy: "http://squid.internal:3128"
);
// Using the Uri overload
var pdfUri = renderer.RenderHtmlAsPdf(
"<h1>Proxied via Uri overload</h1>",
baseUrl: new Uri("https://assets.example.com/"),
proxy: "https://proxy.corp.local:8443"
);
using IronPdf;
var renderer = new ChromePdfRenderer();
// Direct connection (default — no proxy)
var pdfDirect = renderer.RenderHtmlAsPdf("<h1>Direct</h1>");
// Through an unauthenticated proxy
var pdfProxied = renderer.RenderHtmlAsPdf(
"<h1>Proxied</h1>",
baseUrlOrPath: null,
proxy: "http://squid.internal:3128"
);
// Using the Uri overload
var pdfUri = renderer.RenderHtmlAsPdf(
"<h1>Proxied via Uri overload</h1>",
baseUrl: new Uri("https://assets.example.com/"),
proxy: "https://proxy.corp.local:8443"
);
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Direct connection (default — no proxy)
Dim pdfDirect = renderer.RenderHtmlAsPdf("<h1>Direct</h1>")
' Through an unauthenticated proxy
Dim pdfProxied = renderer.RenderHtmlAsPdf(
"<h1>Proxied</h1>",
baseUrlOrPath:=Nothing,
proxy:="http://squid.internal:3128"
)
' Using the Uri overload
Dim pdfUri = renderer.RenderHtmlAsPdf(
"<h1>Proxied via Uri overload</h1>",
baseUrl:=New Uri("https://assets.example.com/"),
proxy:="https://proxy.corp.local:8443"
)
프록시 문자열은 http:// 및 https:// 스킴을 모두 지원합니다. 프록시 자체가 애플리케이션과 프록시 서버 간 연결에 TLS 암호화를 요구할 때는 https://를 사용하세요. 여기서 스킴은 최종 리소스가 아닌 프록시 연결을 지칭합니다 — http:// 프록시는 여전히 CONNECT 터널링을 통해 https:// 리소스를 가져올 수 있습니다.
정적 메서드 변형도 동일한 프록시 매개변수를 수락하므로, 콘솔 애플리케이션이나 유닛 테스트에서 단일 렌더링에 유용합니다:
// Static render with proxy — no renderer instance needed
var pdf = ChromePdfRenderer.StaticRenderHtmlAsPdf(
"<h1>Static render through proxy</h1>",
options: null,
proxy: "http://proxy.corp.local:8080"
);
// Static render with proxy — no renderer instance needed
var pdf = ChromePdfRenderer.StaticRenderHtmlAsPdf(
"<h1>Static render through proxy</h1>",
options: null,
proxy: "http://proxy.corp.local:8080"
);
' Static render with proxy — no renderer instance needed
Dim pdf = ChromePdfRenderer.StaticRenderHtmlAsPdf(
"<h1>Static render through proxy</h1>",
options:=Nothing,
proxy:="http://proxy.corp.local:8080"
)
중요: ProxyAddress 속성은 ChromePdfRenderOptions에 없습니다. 그곳에서 찾지 마세요. 프록시는 엄격하게 RenderHtmlAsPdf 및 StaticRenderHtmlAsPdf 오버로드의 메서드 매개변수입니다.
회사의 프록시를 사용하여 인증하는 방법은?
대부분의 기업 프록시는 자격 증명을 요구합니다. 프록시 URL에 http(s)://username:password@host:port 형식을 사용하여 직접 삽입합니다:
using IronPdf;
var renderer = new ChromePdfRenderer();
string proxyWithAuth = "http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080";
PdfDocument pdf = renderer.RenderHtmlAsPdf(
htmlContent,
baseUrlOrPath: @"C:\templates\assets\",
proxy: proxyWithAuth
);
pdf.SaveAs("report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
string proxyWithAuth = "http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080";
PdfDocument pdf = renderer.RenderHtmlAsPdf(
htmlContent,
baseUrlOrPath: @"C:\templates\assets\",
proxy: proxyWithAuth
);
pdf.SaveAs("report.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim proxyWithAuth As String = "http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080"
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(
htmlContent,
baseUrlOrPath: "C:\templates\assets\",
proxy:=proxyWithAuth
)
pdf.SaveAs("report.pdf")
비밀번호의 특수 문자는 URL로 인코딩하세요. 비밀번호에 @, #, :, / 또는 기타 예약된 URI 문자가 포함된 경우에는 퍼센트로 인코딩해야 합니다. 일반적인 인코딩:
| 문자 | 인코딩 |
|---|---|
@ |
%40 |
# |
%23 |
: |
%3A |
/ |
%2F |
! |
%21 |
% |
%25 |
프로그래밍적으로 비밀번호를 인코딩하려면 Uri.EscapeDataString()를 사용하세요:
string rawPassword = "P@ssw0rd!";
string encoded = Uri.EscapeDataString(rawPassword); // "P%40ssw0rd%21"
string proxy = $"http://svc-account:{encoded}@proxy.corp.local:8080";
string rawPassword = "P@ssw0rd!";
string encoded = Uri.EscapeDataString(rawPassword); // "P%40ssw0rd%21"
string proxy = $"http://svc-account:{encoded}@proxy.corp.local:8080";
Imports System
Dim rawPassword As String = "P@ssw0rd!"
Dim encoded As String = Uri.EscapeDataString(rawPassword) ' "P%40ssw0rd%21"
Dim proxy As String = $"http://svc-account:{encoded}@proxy.corp.local:8080"
프록시 인증을 웹 페이지 인증과 혼동하지 마십시오. ChromeHttpLoginCredentials.NetworkUsername 및 NetworkPassword 속성은 렌더링하는 웹 페이지(웹 사이트와의 NTLM/Negotiate)와의 인증을 수행하지만, 프록시 서버와는 아닙니다. 프록시 인증을 위해서는 자격 증명을 위에서 보여준 것처럼 프록시 URL 문자열에 넣으세요.
프록시 뒤의 URL을 렌더링하는 방법은?
RenderUrlAsPdf()는 프록시 매개변수를 수락하지 않습니다. 이것은 의도적인 API 설계 선택입니다 – RenderUrlAsPdf는 Chromium을 URL로 네비게이션하며, 이 네비게이션을 위한 프록시 설정은 HTML 렌더링 중의 리소스 로딩과는 다르게 처리됩니다.
추천되는 우회 방법: HttpClient를 사용하여 프록시 매개변수가 설정된 WebProxy으로 HTML을 직접 가져온 다음, HTML 문자열을 프록시 매개변수와 함께 RenderHtmlAsPdf()에 전달합니다 (그래야 참조된 자산 — 이미지, CSS, 폰트도 프록시를 통해 라우팅됩니다).
using IronPdf;
using System.Net;
using System.Net.Http;
// Step 1: Configure HttpClient with the corporate proxy
var proxy = new WebProxy("http://proxy.corp.local:8080")
{
Credentials = new NetworkCredential("svc-account", "P@ssw0rd!")
};
var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
using var httpClient = new HttpClient(handler);
// Step 2: Fetch the HTML from the target URL
string targetUrl = "https://dashboard.internal.corp/quarterly-report";
string html = await httpClient.GetStringAsync(targetUrl);
// Step 3: Render the fetched HTML, with the proxy for asset loading
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(
html,
baseUrlOrPath: targetUrl, // Resolves relative asset paths against the original URL
proxy: "http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080"
);
pdf.SaveAs("quarterly-report.pdf");
using IronPdf;
using System.Net;
using System.Net.Http;
// Step 1: Configure HttpClient with the corporate proxy
var proxy = new WebProxy("http://proxy.corp.local:8080")
{
Credentials = new NetworkCredential("svc-account", "P@ssw0rd!")
};
var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
using var httpClient = new HttpClient(handler);
// Step 2: Fetch the HTML from the target URL
string targetUrl = "https://dashboard.internal.corp/quarterly-report";
string html = await httpClient.GetStringAsync(targetUrl);
// Step 3: Render the fetched HTML, with the proxy for asset loading
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(
html,
baseUrlOrPath: targetUrl, // Resolves relative asset paths against the original URL
proxy: "http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080"
);
pdf.SaveAs("quarterly-report.pdf");
Imports IronPdf
Imports System.Net
Imports System.Net.Http
' Step 1: Configure HttpClient with the corporate proxy
Dim proxy As New WebProxy("http://proxy.corp.local:8080") With {
.Credentials = New NetworkCredential("svc-account", "P@ssw0rd!")
}
Dim handler As New HttpClientHandler With {.Proxy = proxy, .UseProxy = True}
Using httpClient As New HttpClient(handler)
' Step 2: Fetch the HTML from the target URL
Dim targetUrl As String = "https://dashboard.internal.corp/quarterly-report"
Dim html As String = Await httpClient.GetStringAsync(targetUrl)
' Step 3: Render the fetched HTML, with the proxy for asset loading
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(
html,
baseUrlOrPath:=targetUrl, ' Resolves relative asset paths against the original URL
proxy:="http://svc-account:P%40ssw0rd%21@proxy.corp.local:8080"
)
pdf.SaveAs("quarterly-report.pdf")
End Using
baseUrlOrPath 매개변수는 상대 경로가 올바르게 해결되도록 가져온 HTML의 원본 대상 URL로 설정됩니다. proxy 매개변수는 렌더링 중에 해당 자산 요청이 프록시를 통해 라우팅되도록 보장합니다.
이 패턴은 인증이 필요한 페이지에서도 작동합니다 — 적절한 쿠키나 헤더로 HttpClient를 구성한 후, 인증된 HTML을 IronPDF에 전달합니다. HTTP 요청 헤더 방법에서는 인증된 요청을 위한 헤더 구성을 다룹니다.
페이지가 렌더링을 위해 JavaScript를 사용하는 경우 (SPA, React 대시보드, Angular 앱), 가져온 HTML은 초기 셸만 포함하게 되며, 클라이언트측 렌더링은 HttpClient 가져오기 동안 실행되지 않습니다. 이러한 경우에는 두 가지 옵션이 있습니다: 시스템 수준 HTTPS_PROXY 환경 변수를 설정하여 RenderUrlAsPdf()이 OS 수준에서 프록시를 통해 경로 설정되도록 하거나, 프록시 매개변수를 사용하기 전에 완전히 렌더된 HTML을 가져오기 위해 헤드리스 브라우저를 사용합니다.
Docker 컨테이너에서 프록시를 구성하는 방법은?
컨테이너화된 환경에서는 메서드별 매개변수보다 시스템 수준 프록시 설정을 선호할 수 있습니다. IronPDF의 Chromium 엔진은 Linux 컨테이너에서 아웃바운드 트래픽 라우팅을 위해 사용하는 표준 HTTP_PROXY 및 HTTPS_PROXY 환경 변수를 준수합니다.
Dockerfile에서 이를 설정하세요:
FROM mcr.microsoft.com/dotnet/aspnet:8.0
# System-level proxy for all outbound HTTP/HTTPS traffic
ENV HTTP_PROXY=http://proxy.corp.local:8080
ENV HTTPS_PROXY=http://proxy.corp.local:8080
ENV NO_PROXY=localhost,127.0.0.1,.internal.corp
# Install IronPDF dependencies (fonts, etc.)
RUN apt-get update && apt-get install -y \
libgdiplus \
libc6-dev \
fonts-liberation \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]
이러한 환경 변수가 설정되어 있으면, 프록시 매개변수 없이 RenderHtmlAsPdf()를 호출할 수 있습니다 — Chromium은 시스템 수준 구성을 자동으로 인식합니다:
// No proxy parameter needed — Chromium uses HTTP_PROXY env var
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// No proxy parameter needed — Chromium uses HTTP_PROXY env var
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
' No proxy parameter needed — Chromium uses HTTP_PROXY env var
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
내부 리소스에 NO_PROXY는 중요합니다. 이게 없으면 Kubernetes 클러스터 내에서 실행되는 로컬 CSS 서버나 이미지 CDN과 같은 내부 서비스에 대한 요청이 불필요하게 프록시를 통과하게 됩니다. 프록시를 우회해야 하는 호스트명 및 도메인을 콤마로 구분합니다.
일반 트래픽에 대한 시스템 수준 프록시와 특정 렌더에 대한 다른 프록시가 모두 필요하다면, 메서드 매개변수가 환경 변수보다 우선권을 가집니다. 필요할 때마다 렌더당 제어 권한을 제공합니다.
Kubernetes 배포의 경우, Dockerfile에 직접 하드코딩하지 않고, ConfigMaps 또는 환경 변수로 프록시 구성을 주입하세요. 이를 통해 서로 다른 프록시 구성과 함께 동일한 컨테이너 이미지를 사용할 수 있습니다:
# Kubernetes pod spec
spec:
containers:
- name: pdf-generator
image: myregistry/pdf-service:latest
env:
- name: HTTP_PROXY
valueFrom:
configMapKeyRef:
name: proxy-config
key: http-proxy
- name: HTTPS_PROXY
valueFrom:
configMapKeyRef:
name: proxy-config
key: https-proxy
- name: NO_PROXY
value: "localhost,127.0.0.1,.internal.corp"
# Kubernetes pod spec
spec:
containers:
- name: pdf-generator
image: myregistry/pdf-service:latest
env:
- name: HTTP_PROXY
valueFrom:
configMapKeyRef:
name: proxy-config
key: http-proxy
- name: HTTPS_PROXY
valueFrom:
configMapKeyRef:
name: proxy-config
key: https-proxy
- name: NO_PROXY
value: "localhost,127.0.0.1,.internal.corp"
환경 변수와 메서드 매개변수가 모두 존재할 때, 메서드 매개변수가 우선합니다. 이는 계층적 설정 모델을 제공합니다: 인프라 수준에서 기본 프록시를 설정하고, 특정 요청이 다른 경로가 필요한 경우 렌더별로 이를 재정의할 수 있습니다.
CI/CD 파이프라인에서 프록시를 어떻게 처리하나요?
회사 네트워크의 CI/CD 러너는 종종 프록시 뒤에 위치합니다. 프록시 URL을 빌드 변수나 비밀로 전달하세요 — 소스 제어에 자격 증명을 하드코딩하지 마세요.
GitHub Actions:
jobs:
generate-pdf:
runs-on: ubuntu-latest
env:
HTTP_PROXY: ${{ secrets.CORP_PROXY_URL }}
HTTPS_PROXY: ${{ secrets.CORP_PROXY_URL }}
steps:
- uses: actions/checkout@v4
- run: dotnet build
- run: dotnet test
jobs:
generate-pdf:
runs-on: ubuntu-latest
env:
HTTP_PROXY: ${{ secrets.CORP_PROXY_URL }}
HTTPS_PROXY: ${{ secrets.CORP_PROXY_URL }}
steps:
- uses: actions/checkout@v4
- run: dotnet build
- run: dotnet test
Azure DevOps:
variables:
- group: proxy-settings # Contains PROXY_URL secret
steps:
- script: |
export HTTP_PROXY=$(PROXY_URL)
export HTTPS_PROXY=$(PROXY_URL)
dotnet run --project PdfGenerator
displayName: 'Generate PDFs behind proxy'
variables:
- group: proxy-settings # Contains PROXY_URL secret
steps:
- script: |
export HTTP_PROXY=$(PROXY_URL)
export HTTPS_PROXY=$(PROXY_URL)
dotnet run --project PdfGenerator
displayName: 'Generate PDFs behind proxy'
Jenkins (선언적 파이프라인):
environment {
HTTP_PROXY = credentials('corp-proxy-url')
HTTPS_PROXY = credentials('corp-proxy-url')
}
이 세 경우 모두 Chromium은 환경 변수를 자동으로 읽습니다. 명시적 제어를 선호한다면, 환경에서 프록시 URL을 읽어 메서드 매개변수로 전달하세요:
string? proxy = Environment.GetEnvironmentVariable("HTTPS_PROXY");
var pdf = renderer.RenderHtmlAsPdf(html, baseUrlOrPath: null, proxy: proxy);
string? proxy = Environment.GetEnvironmentVariable("HTTPS_PROXY");
var pdf = renderer.RenderHtmlAsPdf(html, baseUrlOrPath: null, proxy: proxy);
Option Strict On
Dim proxy As String = Environment.GetEnvironmentVariable("HTTPS_PROXY")
Dim pdf = renderer.RenderHtmlAsPdf(html, baseUrlOrPath:=Nothing, proxy:=proxy)
프록시 문제를 어떻게 해결하나요?
타임아웃 오류: 회사 프록시는 대기 시간을 추가합니다. 기본 60초의 렌더 타임아웃을 늘립니다:
renderer.RenderingOptions.Timeout = 120; // seconds
renderer.RenderingOptions.Timeout = 120; // seconds
renderer.RenderingOptions.Timeout = 120 ' seconds
ChromePdfRenderOptions.Timeout 속성 — 페이지 로드 및 리소스 가져오기를 위한 Chromium의 대기 시간을 제어합니다. 프록시가 요청당 5–10초의 대기 시간을 추가하고, 페이지가 외부 리소스를 20개 이상 불러올 경우 60초는 충분하지 않을 수 있습니다.
SSL 가로채기 (MITM 프록시): 많은 회사 프록시는 회사 루트 CA 인증서를 사용하여 HTTPS 트래픽을 해독하고 다시 암호화합니다. Chromium은 기본적으로 회사 CA를 신뢰하지 않기 때문에 이러한 연결을 거부합니다. 두 가지 솔루션:
- 회사의 CA 인증서를 컨테이너 또는 호스트의 신뢰 루트 저장소에 설치하세요. Linux에서:
.crt를/usr/local/share/ca-certificates/으로 복사하고update-ca-certificates을 실행하세요. - 개발 환경에서만 인증서 유효성 검사를 비활성화할 수 있지만, 프로덕션에서는 절대 하지 마세요. 보다 안전한 방법은 항상 올바른 인증서를 설치하는 것입니다.
NTLM 인증: 인라인 user:pass@host 형식은 Basic 및 Digest 프록시 인증을 지원합니다. Windows 중심의 기업에서 일반적인 NTLM은 프록시 URL 문자열을 통해 지원되지 않습니다. 우회 방법은 CNTLM과 같은 로컬 NTLM-기본 변환 프록시를 호스트 또는 사이드카 컨테이너로 실행하는 것입니다. CNTLM을 NTLM 자격 증명으로 구성한 다음, IronPDF를 http://localhost:3128 (CNTLM의 기본 포트)로 설정하세요.
비어있는 PDF 또는 누락된 자산: PDF가 렌더링되더라도 이미지나 CSS가 누락되면, HTML이 프록시가 차단하거나 다른 프록시 경로가 필요한 리소스를 참조하고 있는 것입니다. baseUrlOrPath 매개변수가 프록시를 통해 올바르게 해결되는지 확인하고, 403 또는 407 응답을 확인하기 위해 프록시의 액세스 로그를 확인하세요.
로컬 자산에 대한 프록시 우회: HTML이 로컬 자산(번들 이미지, 인라인 CSS)과 원격 리소스(CDN 폰트, 외부 스크립트)의 혼합을 참조할 경우, 프록시는 원격 요청만 처리하면 됩니다. baseUrlOrPath를 파일 시스템 자산을 위한 로컬 디렉토리로 설정하고, 네트워크 요청만 프록시가 처리하게 하세요. 이로 인해 로컬 파일 읽기가 불필요하게 프록시를 거치지 않게 합니다.
연결 문제 진단: IronPDF를 사용하기 전에 프록시 문자열이 올바른지 확인하려면, 간단한 HttpClient 요청으로 테스트하세요:
var proxy = new WebProxy("http://proxy.corp.local:8080");
var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
using var client = new HttpClient(handler);
var response = await client.GetAsync("https://httpbin.org/ip");
Console.WriteLine(await response.Content.ReadAsStringAsync());
// Should return the proxy's external IP, not your machine's IP
var proxy = new WebProxy("http://proxy.corp.local:8080");
var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
using var client = new HttpClient(handler);
var response = await client.GetAsync("https://httpbin.org/ip");
Console.WriteLine(await response.Content.ReadAsStringAsync());
// Should return the proxy's external IP, not your machine's IP
Imports System
Imports System.Net
Imports System.Net.Http
Dim proxy As New WebProxy("http://proxy.corp.local:8080")
Dim handler As New HttpClientHandler With {.Proxy = proxy, .UseProxy = True}
Using client As New HttpClient(handler)
Dim response = Await client.GetAsync("https://httpbin.org/ip")
Console.WriteLine(Await response.Content.ReadAsStringAsync())
' Should return the proxy's external IP, not your machine's IP
End Using
이 요청이 성공하더라도 IronPDF가 여전히 실패하면, 문제는 SSL 가로채기 또는 프록시와 Chromium의 CONNECT 터널링 간의 프로토콜 불일치일 가능성이 큽니다. 프록시가 HTTPS 리소스를 위해 HTTP CONNECT를 지원하는지 확인하세요 — 일부 프록시는 터널링을 허용하는 데 명시적 구성을 요구합니다.
다음 단계
IronPDF에서의 프록시 지원은 RenderHtmlAsPdf() 메서드 매개변수입니다 — 프록시 문자열을 전달하면 Chromium 엔진이 모든 HTTP 트래픽을 통해 라우팅합니다. RenderUrlAsPdf() 시나리오의 경우, 처음에 HttpClient과 WebProxy을 사용하여 HTML을 가져옵니다. 컨테이너와 CI/CD의 경우, 시스템 수준의 HTTPS_PROXY 환경 변수가 코드 변경 없는 인프라 수준의 제어를 제공합니다.
로그인 및 인증 방법에서 웹 페이지 인증(프록시 인증과 구별됨)을 탐색하고, HTTP 요청 헤더 가이드에서 사용자 정의 헤더를 확인하며, 렌더링 옵션 참조에서 타임아웃 및 성능 조정을 확인하세요.
라이센스 옵션 보기는 $749부터 시작합니다. ChromePdfRenderer API 참조에서는 모든 메서드 오버로드를 문서화하고, ChromePdfRenderOptions 참조는 모든 구성 가능 속성을 다룹니다.
자주 묻는 질문
C#에서 PDF 렌더링을 위해 프록시 서버를 어떻게 구성하나요?
C#에서 PDF 렌더링을 위해 프록시 서버를 구성하려면, IronPDF의 RenderHtmlAsPdf 메서드를 호출할 때 proxy 매개변수를 사용할 수 있습니다. 이를 통해 웹 리소스에 액세스하기 위한 프록시 설정을 지정할 수 있습니다.
IronPDF에서 프록시를 사용하는 목적은 무엇입니까?
IronPDF에서 프록시를 사용하면 PDF를 렌더링할 때 네트워크 요청을 관리하는 데 도움이 되며, 특히 방화벽 뒤나 기업 네트워크와 같이 인터넷 접속이 제한된 환경에서 유용합니다.
IronPDF는 인증된 프록시를 처리할 수 있습니까?
네, IronPDF는 인증된 프록시를 처리할 수 있습니다. C# 코드에서 프록시 설정과 함께 필요한 인증 자격 증명을 제공해야 합니다.
Docker 컨테이너 내에서 프록시를 사용하여 IronPDF를 사용할 수 있습니까?
네, IronPDF는 Docker 컨테이너 내에서 프록시와 함께 작동하도록 구성할 수 있습니다. 프록시 설정이 전달되도록 Docker 환경 변수가 올바르게 설정되었는지 확인하십시오.
IronPDF에서 프록시 문제를 해결하려면 어떻게 해야 합니까?
IronPDF의 프록시 문제를 해결하려면 프록시 설정을 확인하고, 인증 정보가 정확한지 확인하며, 네트워크 연결 상태를 점검하십시오. 로그에 기록된 오류 메시지를 검토하는 것도 문제 파악에 도움이 될 수 있습니다.
IronPDF는 프록시 설정이 적용된 CI/CD 파이프라인에서 사용할 수 있습니까?
네, IronPDF는 프록시 구성을 통해 CI/CD 파이프라인에 통합할 수 있습니다. PDF 렌더링 과정에서 필요한 프록시 설정이 전달되도록 빌드 환경이 설정되어 있는지 확인하십시오.
Enterprise 환경에서 IronPDF와 함께 프록시를 사용하면 어떤 이점이 있습니까?
Enterprise 환경에서 IronPDF와 프록시를 함께 사용하면 보안을 강화하고, 인터넷 액세스를 제어하며, 대역폭 사용량을 관리할 수 있어 조직의 IT 정책 준수를 더욱 용이하게 할 수 있습니다.

