|
| 1 | +import Layout from "@/components/Layout"; |
| 2 | +import Button from "@/components/Common/button"; |
| 3 | +import Section from "@/components/Common/section"; |
| 4 | +import Alert from "@/components/Common/alert"; |
| 5 | +import Tabs from "@/components/Common/tab"; |
| 6 | +import Step from "@/components/Common/step"; |
| 7 | +import Card from "@/components/Common/card"; |
| 8 | +import Important from "@/components/Common/important"; |
| 9 | +import Highlight from "@/components/Common/highlight"; |
| 10 | +import Link from "next/link"; |
| 11 | +import {GoArrowLeft} from "react-icons/go"; |
| 12 | + |
| 13 | + |
| 14 | +import Head from "next/head"; |
| 15 | + |
| 16 | +<Layout> |
| 17 | +<Head> |
| 18 | +<title>مستندات تنظیم reverse proxy برای WordPress - لیارا</title> |
| 19 | +<meta property="og:title" content="مستندات خدمات رایانش ابری لیارا" /> |
| 20 | +<meta property="og:description" content="مستندات مربوط به نحوه تنظیم reverse proxy برای برنامههای وردپرس و نحوه تنظیم کردن proxy pass برای هدایت آدرس بلاگ به صفحه وردپرسی" /> |
| 21 | +<meta property="og:image" content="https://files.liara.ir/liara/logos/liara-poster.jpg" /> |
| 22 | +</Head> |
| 23 | + |
| 24 | +# تنظیم Reverse Proxy برای WordPress |
| 25 | +<hr className="mb-2" /> |
| 26 | + |
| 27 | + <video |
| 28 | + src="https://files.liara.ir/liara/wordpress/wordpress-reverse-proxy.mp4" |
| 29 | + controls="controls" |
| 30 | + className="block w-full" |
| 31 | + width="100%" |
| 32 | + /> |
| 33 | + |
| 34 | + <br /> |
| 35 | + |
| 36 | +ممکن است که شما بخواهید برنامهتان را در |
| 37 | +دامنه اصلیتان (مثلاً <Important>example.com</Important>) ارائه |
| 38 | +و در زیرصفحهای از آن (مثلاً <Important>example.com/blog</Important>)، وبسایت وردپرسیتان |
| 39 | +را به کاربر، نمایش دهید. برای این کار میتوانید از reverse proxy استفاده کنید. |
| 40 | +پروکسی معکوس یا reverse proxy، یک سرور واسط است که درخواستهای کلاینتها را دریافت و به سرورهای دیگر در بکاند منتقل میکند. |
| 41 | + |
| 42 | + |
| 43 | +<div className="h-2" /> |
| 44 | +<Alert variant="success"> |
| 45 | +<p> |
| 46 | +همچنین بخوانید: <a href="/paas/details/reverse-proxy" className="text-[#2196f3]">آشنایی با Reverse Proxy</a> |
| 47 | +</p> |
| 48 | +</Alert> |
| 49 | +<div className="h-2" /> |
| 50 | + |
| 51 | +فرض کنید که دو برنامه دارید؛ یک برنامه وردپرسی که blog شما است و |
| 52 | +برنامه دیگری که میخواهید در دامنه اصلیتان ارائه دهید (هر دو برنامه، کاملاً مستقل از هم هستند) |
| 53 | +برای اینکه برنامه اصلیتان را در دامنه اصلی ارائه دهید و وبسایت وردپرسیتان را در زیرصفحهای از آن، نمایش دهید، |
| 54 | +کافیست تا مراحل زیر را طی کنید: |
| 55 | + |
| 56 | + |
| 57 | +<Step steps={[ |
| 58 | +{ |
| 59 | +step: "۱", |
| 60 | +content: ( |
| 61 | +<> |
| 62 | +<h3>بررسی شبکه خصوصی</h3> |
| 63 | +<p> |
| 64 | + هم برنامه اصلی و هم برنامه وردپرسی، باید درون |
| 65 | + یک <a href="/paas/details/private-network" className="text-[#2196f3]">شبکه خصوصی</a> قرار داشته باشند. |
| 66 | + در غیر اینصورت، امکان تنظیم reverse proxy برای برنامههای مستقر شده در لیارا وجود ندارد. |
| 67 | +</p> |
| 68 | + |
| 69 | +</> |
| 70 | +) |
| 71 | +}, |
| 72 | +{ |
| 73 | + step: "۲", |
| 74 | + content: ( |
| 75 | + <> |
| 76 | + <h3>ساخت سرور reverse proxy</h3> |
| 77 | + <p> |
| 78 | + در شبکه خصوصی مشترک، یک <a href="/paas/docker/getting-started" className="text-[#2196f3]">برنامه Docker</a> جدید ایجاد کنید. |
| 79 | + سپس، کافیست تا در لوکال، یک دایرکتوری خالی ایجاد کنید؛ درون دایرکتوری |
| 80 | + یک فایل به نام <Important>Dockerfile</Important> ایجاد کنید و قطعه کد زیر را درون آن قرار دهید: |
| 81 | + </p> |
| 82 | + <div className='h-2' /> |
| 83 | + <div dir="ltr"> |
| 84 | + <Highlight className="Dockerfile"> |
| 85 | + {`FROM nginx:1.27.3 |
| 86 | +COPY nginx.conf /etc/nginx/nginx.conf`} |
| 87 | + </Highlight> |
| 88 | + </div> |
| 89 | + <div className='h-2' /> |
| 90 | + |
| 91 | + <p> |
| 92 | + در ادامه، در کنار فایل فوق، فایل دیگری به نام <Important>nginx.conf</Important> ایجاد کنید و قطعه کد زیر را درون آن قرار دهید: |
| 93 | + </p> |
| 94 | + |
| 95 | + <div className='h-2' /> |
| 96 | + <div dir="ltr"> |
| 97 | + <Highlight className="config"> |
| 98 | + {`events {} |
| 99 | +
|
| 100 | +http { |
| 101 | + server { |
| 102 | + # Resolver settings for reverse proxy |
| 103 | + resolver 127.0.0.11 ipv6=off valid=5s; |
| 104 | + listen 80; |
| 105 | +
|
| 106 | + # Redirect /wp-admin/* to /blog/wp-admin/* |
| 107 | + location ~ ^/wp-admin/(.*)$ { |
| 108 | + return 301 /blog/wp-admin/$1; |
| 109 | + } |
| 110 | +
|
| 111 | + # WordPress configuration |
| 112 | + location /blog { |
| 113 | + proxy_pass http://wordpress-app:80; |
| 114 | + proxy_read_timeout 90; |
| 115 | + proxy_connect_timeout 90; |
| 116 | + proxy_redirect off; |
| 117 | +
|
| 118 | + # Pass necessary headers to WordPress |
| 119 | + proxy_set_header X-Real-IP $remote_addr; |
| 120 | + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
| 121 | + proxy_set_header X-Forwarded-Proto $scheme; # Important for HTTPS detection |
| 122 | + proxy_set_header Host $host; # Ensure correct host header |
| 123 | + proxy_set_header X-NginX-Proxy true; |
| 124 | + proxy_set_header Connection ""; # Prevent connection close issues |
| 125 | +
|
| 126 | + # Forward /blog/* to WordPress backend |
| 127 | + rewrite ^/blog/(.*)$ /$1 break; |
| 128 | + } |
| 129 | +
|
| 130 | + # Main app service routing |
| 131 | + location / { |
| 132 | + proxy_pass http://main-app:3005; |
| 133 | + proxy_set_header Host $host; |
| 134 | + proxy_set_header X-Real-IP $remote_addr; |
| 135 | + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
| 136 | + } |
| 137 | + } |
| 138 | +} |
| 139 | +`} |
| 140 | + </Highlight> |
| 141 | + </div> |
| 142 | + <div className='h-2' /> |
| 143 | + <p> |
| 144 | + در قطعه کد فوق، به جای <Important>main-app</Important> و <Important>wordpress-app</Important>، شناسه برنامه اصلی و وردپرسی خود را قرار دهید. |
| 145 | + از آنجایی که ارتباط از طریق شبکه خصوصی برقرار میشود، درخواست http است و همچنین بعد از شناسه، باید پورتهایی که برنامهها در آن به درخواست کاربران listen میکنند؛ قرار گرفته باشد. |
| 146 | + همچنین، اگر که قصد دارید وردپرس را در زیرصفحهای به جز <Important>blog</Important> قرار دهید. نام زیرصفحه مدنظرتان |
| 147 | + را جایگزین <Important>blog</Important> در قطعه کد فوق، کنید. |
| 148 | + </p> |
| 149 | + <div className='h-2' /> |
| 150 | + <p> |
| 151 | + در نهایت با اجرای دستور زیر، برنامه فوق را در لیارا مستقر کنید: |
| 152 | + </p> |
| 153 | + <div className='h-2' /> |
| 154 | + <div dir="ltr"> |
| 155 | + <Highlight className="bash"> |
| 156 | + {`liara deploy --port=80`} |
| 157 | + </Highlight> |
| 158 | + </div> |
| 159 | + <div className='h-2' /> |
| 160 | + |
| 161 | + |
| 162 | + </> |
| 163 | + |
| 164 | + ) |
| 165 | + }, |
| 166 | +{ |
| 167 | +step: "۳", |
| 168 | +content: ( |
| 169 | +<> |
| 170 | +<h3>پیکربندی تنظیمات WordPress</h3> |
| 171 | +<p> |
| 172 | + طبق مستندات <a href="/paas/disks/ftp-access" className="text-[#2196f3]"> دسترسی FTP</a>، یک دسترسی FTP برای دیسک data برنامه وردپرسی خود ایجاد کنید |
| 173 | + و با استفاده از آن، به دیسک متصل شده و در ابتدای فایل <Important>wp-config.php</Important>، پس از خط <Important>php?></Important>، قطعه کد زیر را قرار دهید: |
| 174 | + |
| 175 | +</p> |
| 176 | + <div className='h-2' /> |
| 177 | + <div dir="ltr"> |
| 178 | + <Highlight className="php"> |
| 179 | + {`<?php // بعد از این خط |
| 180 | + define( 'WP_SITEURL', 'https://example.com/blog' ); |
| 181 | + define( 'WP_HOME', 'https://example.com/blog' ); |
| 182 | + $_SERVER['HTTPS'] = 'on'; |
| 183 | +`} |
| 184 | + </Highlight> |
| 185 | + </div> |
| 186 | + <div className='h-2' /> |
| 187 | + <p> |
| 188 | + در قطعه کد فوق، به جای <Important>example.com</Important>، دامنه اصلیتان را قرار دهید. |
| 189 | + همچنین، اگر که قصد دارید وردپرس را در زیرصفحهای به جز <Important>blog</Important> قرار دهید. نام زیرصفحه مدنظرتان |
| 190 | + را جایگزین <Important>blog</Important> در قطعه کد فوق، کنید. |
| 191 | + در نهایت، تنظیمات جدید را ذخیره کرده و دسترسی FTP را ببندید. |
| 192 | + </p> |
| 193 | +</> |
| 194 | +) |
| 195 | +}, |
| 196 | + |
| 197 | +]}/> |
| 198 | + |
| 199 | + |
| 200 | +<br/> |
| 201 | +<div className="h-1" /> |
| 202 | + |
| 203 | +تمامی کارها انجام شده است و اکنون میتوانید در زیر صفحه <Important>blog</Important>، به برنامه وردپرسیتان دسترسی داشته باشید؛ در حالی که |
| 204 | +ریشه دامنه، بر روی برنامه اصلی، تنظیم شده است. |
| 205 | +</Layout> |
0 commit comments